/*
 * Fecha.cpp - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */


#include "Fecha.h"

Fecha::Fecha()
{
	this->dia = 0;
	this->mes = 0;
	this->anio = 0;
	this->hora = 0;
	this->minuto = 0;
}

Fecha::Fecha(int dia, int mes, int anio, int hora, int minuto)
{
	this->dia = dia;
	this->mes = mes;
	this->anio = anio;
	this->hora = hora;
	this->minuto = minuto;
}

Fecha::Fecha(Fecha *fecha)
{
	this->dia = fecha->dia;
	this->mes = fecha->mes;
	this->anio = fecha->anio;
	this->hora = fecha->hora;
	this->minuto = fecha->minuto;
}

string Fecha::toString()
{
	stringstream out;

	( dia > 9 ) ? out << dia : out << ' ' << dia;
	out << "/";
	( mes > 9 ) ? out << mes : out << '0' << mes;
	out << "/" ;
	out << anio;
	out << " ";
	( hora > 9 ) ? out << hora : out << ' ' << hora;
	out << ":";
	( minuto > 9 ) ? out << minuto : out << '0' << minuto;

	return out.str();
}

bool Fecha::same(ICollectible *icollectible)
{
	Fecha *fecha = (Fecha*) icollectible;

	return this->anio == fecha->anio &&
		   this->mes == fecha->mes &&
		   this->dia == fecha->dia &&
		   this->hora == fecha->hora &&
		   this->minuto == fecha->minuto;
}

int Fecha::getAnio() const
{
    return anio;
}

int Fecha::getDia() const
{
    return dia;
}

int Fecha::getHora() const
{
    return hora;
}

int Fecha::getMes() const
{
    return mes;
}

int Fecha::getMinuto() const
{
    return minuto;
}

void Fecha::setAnio(int anio)
{
    this->anio = anio;
}

void Fecha::setDia(int dia)
{
    this->dia = dia;
}

void Fecha::setHora(int hora)
{
    this->hora = hora;
}

void Fecha::setMes(int mes)
{
    this->mes = mes;
}

void Fecha::setMinuto(int minuto)
{
    this->minuto = minuto;
}

bool Fecha::menorA(Fecha *fechaComp)
{
    if(this->anio > fechaComp->getAnio())
    {
    	return false;
    }
    else if(this->anio == fechaComp->getAnio())
    {
        if(this->mes > fechaComp->getMes())
        {
        	return false;
        }
        else if(this->mes == fechaComp->getMes())
        {
            if(this->dia > fechaComp->getDia())
            {
            	return false;
            }
            else if(this->dia == fechaComp->getDia())
            {
                if(this->hora > fechaComp->getHora())
                {
                	return false;
                }
                else if(this->hora == fechaComp->getHora())
                {
                    if(this->minuto > fechaComp->getMinuto())
                    {
                    	return false;
                    }
                    else if(this->minuto == fechaComp->getMinuto())
                    {
                    	return false;
                    }

                }

            }
        }

    }
	return true;
}

Fecha::~Fecha()
{
}
